package com.yeren.czbk.sessionMethod;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.yeren.czbk.sessionMethod.entity.Tree;


@SuppressWarnings("deprecation")
public class App {
	private static SessionFactory ssessionFactory;
	//初始化ssessionFactory
	static{
		Configuration cfg=new Configuration();
		cfg.configure("hibernate.cfg.xml");//读取配置文件
		ssessionFactory=cfg.buildSessionFactory();//根据配置生成session工厂
	}
	
	/**
	 * save
	 * 把临时状态变为持久状态
	 * @throws Exception
	 */
//	@Test
	public void testSave() throws Exception{
		Session session=ssessionFactory.openSession();//打开一个新的事务
		session.beginTransaction();//开始事务
		//-------------------------------------------------
		Tree tree=new Tree();//临时状态
		tree.setName("苹果树1");
		session.save(tree);//变为持久状态
		
		
		
		//-------------------------------------------------
		session.getTransaction().commit();
		session.close();//关闭session，释放资源
		
		tree.setName("梨树1");
		System.out.println(tree.getName());//游离状态
	}
	
	/**
	 * update
	 * 把游离状态变为持久状态
	 * @throws Exception
	 */
	@Test
	public void testUpdate() throws Exception{
		Session session=ssessionFactory.openSession();//打开一个新的事务
		session.beginTransaction();//开始事务
		//-------------------------------------------------
		Tree tree=(Tree) session.get(Tree.class,1);
		System.out.println(tree.getName());//持久化状态
		tree.setName("AA1");
		session.flush();//刷出到数据库，默认是提交时flush
//		session.clear();//清除session中所有的对象
		
		session.evict(tree);//清除session中一个指定的对象
		
		
		//-------------------------------------------------
		session.getTransaction().commit();
		session.close();//关闭session，释放资源
	}
	
	/**
	 * saveOrUpdate
	 * 把临时或游离状态变为持久状态
	 * @throws Exception
	 */
	@Test
	public void testSavaOrUpdate() throws Exception{
		Session session=ssessionFactory.openSession();//打开一个新的事务
		session.beginTransaction();//开始事务
		//-------------------------------------------------
		//新建对象
		
		
		//-------------------------------------------------
		session.getTransaction().commit();
		session.close();//关闭session，释放资源
	}
	
	/**
	 * load
	 * 把持久化或游离转为删除状态
	 * @throws Exception
	 */
	@Test
	public void testLoad() throws Exception{
		Session session=ssessionFactory.openSession();//打开一个新的事务
		session.beginTransaction();//开始事务
		//-------------------------------------------------
		//新建对象
		
		
		//-------------------------------------------------
		session.getTransaction().commit();
		session.close();//关闭session，释放资源
	}
	
	/**
	 * 获取数据，是持久化状态
	 * @throws Exception
	 */
	@Test
	public void testGet() throws Exception{
		Session session=ssessionFactory.openSession();//打开一个新的事务
		session.beginTransaction();//开始事务
		//-------------------------------------------------
		//新建对象
		
		
		//-------------------------------------------------
		session.getTransaction().commit();
		session.close();//关闭session，释放资源
	}
	
	
	


	
}
